package net.chathu.airgw.packets.chat 
{
	import net.chathu.airgw.Debug;
	import net.chathu.airgw.model.PrivateChatInfo;
	import net.chathu.airgw.model.User;
	import net.chathu.airgw.packets.gw.serverpackets.NoticePacket;
	import net.chathu.airgw.packets.gw.serverpackets.PrivMsgPacket;
	import net.chathu.airgw.util.ByteArrayUtil;
	import net.chathu.airgw.util.StringUtil;
	/**
	 * ...
	 * @author ze
	 */
	public class MPrivate extends ChatPacket 
	{
		
		public function MPrivate() 
		{
			
		}
		
		override public function execute():void
		{
			var userId:int = parseInt(data[2]);
			var privateId:int = parseInt(String(data[1]).substring(8));
			
			if (userId != sessionData.chatData.userId)
			{
				if (userId == -1)
				{
					//privat beszelgetest befolyasolo uzenet
					var action:String = String(data[3]).toLowerCase();
					var privInfo:PrivateChatInfo = sessionData.chatData.getPrivateChatInfo(privateId);
					if (privInfo)
					{
						var partnerId:int = privInfo.partnerId;
						var partner:User = User(sessionData.chatData.users.getUser(partnerId));
						
						if (action == "donotdisturb")
						{
							
							//ha sajat magunknak akarunk irni, akkor ezt hagyjuk figyelmen kivul
							if (partnerId != sessionData.chatData.userId)
							{
								sendToClient(new NoticePacket(partner.userHost, sessionData.nick, partner.name + " ne zavarj állapotban van!"));
								sendToChat(ByteArrayUtil.convertParams(["unsub", data[1]])); //nincs tesztelve!
								Debug.echo("DND-> Privates: " + sessionData.chatData.privateChats.length);
							}
						} else if (action == "bye") {

							if (partnerId != sessionData.chatData.userId)
							{
								//TODO: ha nincs mar itt a partner, akkor kell kuldeni a szervernek unsub msgt?
								//ha unsubot kuldunk, akkor nem tudunk kesobb ujbol beszelni vele, anelkul, hogy uj beszelgetest inditanank
								//(igy megmarad a beszelgetes..TALAN!)
								if (partner)
								{
									sendToClient(new NoticePacket(partner.userHost, sessionData.nick, partner.name + " bezárta a társalgás ablakát!"));
									sendToChat(ByteArrayUtil.convertParams(["unsub", data[1]])); //nincs tesztelve!
									Debug.echo("BYE-> Privates: " + sessionData.chatData.privateChats.length);
								} else {
									Debug.echo("A partnerunk kozben mar kilepett, kilepeskor toroltuk a beszelgetest vele");
								}
							}
						} else {
							Debug.echo("MPrivates, unhandled action: " + action);
						}
					} else {
						Debug.echo("MPrivate #01! unhandled case");
						//Pl:
						//m\000private/1153568\000\-1\000bye
						//1153568 a privateId
						//Valoszinuleg kilepett egy user, akivel priviztunk. Kilepesekor letoroltuk a privit, de a szerver meg csak most torolne le.
					}
					
				} else {
					
					var message:String = data[3];
					if (message.toLocaleLowerCase().indexOf("/me ") == 0)
					{
						message = "ACTION " + message.substring(4) + "";
					} else if (message.toLocaleLowerCase().indexOf("/me") == 0) {
						message = "ACTION " + message.substring(3) + "";
					}
					
					//message = StringUtil.convertFromISO88591(message); ez mar nem kell ide, talan javitottak..
					var partnerUser:User = User(sessionData.chatData.users.getUser(userId));
					if (!sessionData.chatData.isIgnored(partnerUser.regId)) {
						
						sendToClient(new PrivMsgPacket(partnerUser.userHost, sessionData.nick, message));
					}
					
				}
				
			} else {
				//ezt a uzenetet mi kuldtuk a partnerunknek
				//NO OP
			}
		}
		
	}

}